All sounds are procedurally generated using pure Python (sine waves, noise, envelopes).
No external audio libraries required — just math and the standard library's wave module.
How the sounds are made
Each sound is built from basic building blocks:
Sine waves — pure tones at specific frequencies
Noise — random values for percussive/textural sounds
Envelopes — attack-decay shapes that control volume over time
Frequency sweeps — changing pitch over time (bubbles, chirps)
Harmonics — multiple sine waves at integer multiples of base frequency
Filtering — running averages to smooth noise into rumble/waves